package com.yfp.operation.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yfp.operation.domain.DeviceCurrentComboPlanRoadDO;
import com.yfp.operation.domain.dto.DamageDTO;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 *
 * @description 针对表【device_current_combo_plan_road】的数据库操作Service
 * @createDate 2024-04-17 17:41:45
 */
public interface DeviceCurrentComboPlanRoadService extends IService<DeviceCurrentComboPlanRoadDO> {

    /**
     * 根据设备id集合查询设备当前组合计划货道
     *
     * @param machineIds
     * @return
     */
    List<DeviceCurrentComboPlanRoadDO> getComboNumByMachineIds(List<String> machineIds);

    /**
     * 根据设备集合统计设备的库存数量
     *
     * @param deviceCurrentComboPlanRoadDOS 设备集合
     * @return 每个设备的库存数量
     */
    Map<String, Integer> statisticalQuantity(List<DeviceCurrentComboPlanRoadDO> deviceCurrentComboPlanRoadDOS);

    /**
     * 根据设备id查询设备当前组合计划货道
     *
     * @param machineId 设备id
     * @return 设备当前组合计划货道
     */
    List<DeviceCurrentComboPlanRoadDO> getAllByMachineId(String machineId);

    /**
     * 根据设备id删除设备当前组合计划货道
     *
     * @param damageId 设备id
     * @return 是否删除成功
     */
    Boolean deleteById(List<String> damageId);

    /**
     * 报损处理
     *
     * @param damageDTOS 报损数据
     * @return 是否删除成功
     */
    Boolean damageHandle(List<DamageDTO> damageDTOS);

    /**
     * 根据设备id清理库存
     * @param deviceId 设备id
     */
    void deleteByMachineId(String deviceId);

    /**
     * 数据插入
     * @param item
     */
    void insert(DeviceCurrentComboPlanRoadDO item);

    /**
     * 根据设备id查看库存
     * @param machineId 设备id
     * @return
     */
    List<DeviceCurrentComboPlanRoadDO> roadInfo(String machineId);

    void updateRoad(DeviceCurrentComboPlanRoadDO dccpr);

    void updateComboNum(DeviceCurrentComboPlanRoadDO aDo);

    void batchUpdate(ArrayList<DeviceCurrentComboPlanRoadDO> dccprList);

    void insertAll(List<DeviceCurrentComboPlanRoadDO> comboList);
}
